package com.cskaoyan.javase.basic._7operator._3ternary;

/**
 * @description: 三目运算符
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * 三目运算符: 指的是有三个操作数的运算符,所以也叫三元运算符
 *  语法:
 *      (条件表达式)?表达式1:表达式2
 * 因为表达式往往有结果,所以三目运算符表达式也要有结果
 *
 * 三目运算符比较if...else:
 *      1,优点: 简洁,效率高
 *      2,缺点: 三目运算符的结果必须执行表达式,这样就限制了它的使用
 *              比如无法在表达式的位置写一个输出语句
 *              但是if...else不受这个限制
 *      结论: 三目运算符简洁高效,能够使用尽量使用它,但是它的使用限制很多,实际开发中if使用更频繁
 *
 */
public class Demo {
    public static void main(String[] args) {
        //计算两个数的最大值
        //int a = 10;
        //int b = 20;
        //int max = (a > b) ? a : b;
        //System.out.println(max);

        //使用if改写三目运算符,对应if..else
        int a = 10;
        int b = 70;
        int c = 30;
        int max;
        //if (a > b) {
        //    max = a;
        //} else {
        //    max = b;
        //}

        //求三个数的最大值
        //max = ((a > b) ? a : b) > c ? ((a > b) ? a : b) :c;
        //Condition 'a > b' is always 'false'
        //嵌套使用三目运算符会让代码变得简洁,变得优雅,同时带来的后果是可读性较差
        //我们在代码简洁优雅和可读性之间应该找到一个平衡的点
        max = (a > b) ? ((a > c) ? a : c) : ((b > c) ? b : c); //使用两次三目运算符
        System.out.println(max);
    }
}
